package errorHandle;

import baseClass.ErrorParse;
import baseClass.ErrorSema;
import baseClass.ErrorToken;

import java.util.ArrayList;

/*
    用来在封装类和错误处理类之间解耦的传递error
    2022-3-9-杨海南
 */
public class ErrorDeliver {
    private int semaErrorIndex=0;
    private ArrayList<ErrorToken> tokenErrorList = new ArrayList<>();
    private ArrayList<ErrorParse> parseErrorList = new ArrayList<>();
    private ArrayList<ErrorSema> semaErrorList = new ArrayList<>();
    //饿汉单例设计
    private static ErrorDeliver errorDeliverInstance = new ErrorDeliver();

    private ErrorDeliver() {
    }

    public static ErrorDeliver getErrorDeliverInstance() {
        return errorDeliverInstance;
    }

    public ArrayList<ErrorSema> getSemaErrorList() {
        return semaErrorList;
    }

    public void addNewErrorToken(ErrorToken errorToken) {
        this.tokenErrorList.add(errorToken);
    }

    public void addNewParseToken(ErrorParse errorParse) {
        this.parseErrorList.add(errorParse);
    }

    public void addNewSemaError(ErrorSema errorSema) {
        errorSema.setErrorIndex(semaErrorIndex++);
        this.semaErrorList.add(errorSema);
    }

    public ArrayList<ErrorToken> getTokenErrorList() {
        return tokenErrorList;
    }

    public ArrayList<ErrorParse> getParseErrorList() {
        return parseErrorList;
    }
}
